# encoding:utf-8
class ArrayStack:
    """
    基于数组实现的栈
    """
    def __init__(self):
        """构造方法"""
        self.__stack: list[int] = []    # 用于存储栈元素的数组

    def size(self) -> int:
        """获取栈的长度"""
        return len(self.__stack)

    def is_empty(self) -> bool:
        """判断栈是否为空"""
        return self.__stack == []

    def push(self, item: int) -> None:
        """入栈"""
        self.__stack.append(item)

    def pop(self) -> int:
        """出栈"""
        if self.is_empty():
            raise IndexError("栈为空")
        return self.__stack.pop()

    def peek(self) -> int:
        """访问栈顶元素"""
        if self.is_empty():
            raise IndexError("栈为空")
        return self.__stack[-1]

    def to_list(self) -> list[int]:
        """返回列表用于打印"""
        return self.__stack
